#include "pmu.h"

/**
 * @desc  : 睡眠模式 几乎没用
 * @date  : 2024-12-06
 * @author: AnRui
 */
void PMU_SLEEP_MODE() {
    // 电池管理单元时钟
    rcu_periph_clock_enable(RCU_PMU);
    // 进入睡眠模式
    pmu_to_sleepmode(WFI_CMD);

}

/**
 * @desc  : 深度睡眠模式  任意外部中断唤醒
 * @date  : 2024-12-06
 * @author: AnRui
 */
void PMU_DEEP_SLEEP_MODE() {
    // 电池管理单元时钟
    rcu_periph_clock_enable(RCU_PMU);
    // 进入深度睡眠模式
		// PMU_LDO_NORMAL: 深度睡眠时 LDO 仍以全负载能力工作 内核唤醒快
		// PMU_LDO_LOWPOWER: 深度睡眠时 LDO 降低输出电流能力 内核唤醒慢
    pmu_to_deepsleepmode(PMU_LDO_LOWPOWER, PMU_LOWDRIVER_ENABLE, WFI_CMD);
    // 把主频设置回来 深度睡眠后 会修改系统主频
    SystemInit();
}

/**
 * @desc  : 待机模式 NRST WKUP按钮唤醒
 * @date  : 2024-12-06
 * @author: AnRui
 */
void PMU_STANDBY_MODE() {
    // 电池管理单元时钟
    rcu_periph_clock_enable(RCU_PMU);
    // 清理待机模式标记
    pmu_flag_clear(PMU_FLAG_RESET_STANDBY);
    // 启用唤醒引脚
    pmu_wakeup_pin_enable();
    // 进入待机模式
    pmu_to_standbymode();
}







